When a person wishes to access a resource on a computer network, the person may enter a network identifier, e.g., a resource locator, in a software application executing on a client device. For example, if a person wished to access a certain website, the person may enter a Universal Resource Locator (“URL”) into an address bar of a web browser. In general, a URL contains a domain name followed by resource specific information. For example, the URL “www.example.com/index.html” contains the domain name “www.example.com.” A domain name does not necessarily identify a specific host device or a network address. Thus, to communicate with a host device, the client device resolves a domain name of the host device into a unique network address associated with the host device. To resolve a domain name into a network address, the client device may use the Domain Name System (“DNS”).
To use a DNS, a client device may send a DNS request addressed to an external DNS server, which may be maintained by an Internet Service Provider or other organization. A DNS request is a request by a client device to resolve a domain name into a unique network address. In response to the DNS request, the DNS server may generate a DNS response that contains a list of network addresses. These network addresses may be either associated with other DNS servers or specific host devices for the domain name. If the DNS response contains the network addresses of other DNS servers, the client device may then send a DNS request to one of the DNS servers contained in the list. This DNS server may send a DNS response containing a list of network addresses of still other DNS servers. Eventually, a DNS server may respond with the network address of the specific host device.
As mentioned above, the DNS response contains a list of network addresses. By changing the order of this list, a DNS server may be able to control which network address the client device sends a request to next. Thus, by changing the order of the list for different clients, the DNS server can effectively direct the different client devices to different host devices. In this way, the DNS server can balance the processing load presented by client devices across an array of different servers, which may be geographically distributed. This process is known as Global Server Load Balancing (GSLB). This technique is often used by large enterprises to control deployment of applications across multiple data centers
To save time on subsequent DNS requests, applications on a client device may store DNS responses in a local DNS cache. Thus, when the client device requests a resource using a previously resolved domain name, the client device may use the network addresses associated with the domain name in the cache rather than sending a new DNS request to a DNS server. Because conditions on the network may change, a client device may periodically purge its DNS cache. After the client device purges its DNS cache, the client device may send a new DNS request to resolve the domain name into a network address again. This may be problematic in environments that make use of GSLB since a client may be directed to a different data center each time the client refreshes its DNS cache.